package com.simple.structure.decorator;

import com.simple.LogUtil;

/**
 * 装饰器模式
 * 使用场景
 * 1. 需要扩展一个类的功能
 * 2. 动态的为一个对象增加功能
 * 缺点: 产生过多相似对象, 不易排错
 *
 * @author simple
 * @version 1.0
 * @date 2018-12-13 14:26
 * @since 1.0
 */
public class Decorator implements Sourceable {
    private Sourceable source;

    public Decorator(Sourceable source) {
        this.source = source;
    }

    @Override
    public void method() {
        LogUtil.info("开启事务 Start Transaction");
        source.method();
        LogUtil.info("提交事务 Commit");
    }
}
